package com.dingding.special.controller;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.dingding.common.core.base.controller.BaseController;
import com.dingding.common.core.base.dto.FacadeResult;
import com.dingding.common.core.base.dto.ResponseEntity;
import com.dingding.facade.account.common.dto.special.ReqAddSpecialDepositAccount;
import com.dingding.facade.account.common.dto.special.ReqDeleteSpecialDepositAccount;
import com.dingding.facade.account.common.dto.special.ReqGetSpecialDepositAccount;
import com.dingding.facade.account.common.dto.special.ReqSUAStatus;
import com.dingding.facade.account.common.dto.special.ReqSpecialWithdrawals;
import com.dingding.facade.account.facade.special.ISpecialUserAccountFacade;
import com.dingding.facade.special.trasfer.today_info.ReqGetTodayInfo;
import com.dingding.facade.special.trasfer.today_info.ResGetTodayInfo;
import com.dingding.facade.special.trasfer.up_posi.ReqSetUserStatusDTO;
import com.dingding.facade.user.common.dto.special.driver.ReqForgetSpecialDepositPassword;
import com.dingding.facade.user.common.dto.special.driver.ReqUpdateSpecialDepositPassword;
import com.dingding.facade.user.dto.car.ReqGetCarBrands;
import com.dingding.facade.user.dto.car.ReqGetCarModels;
import com.dingding.facade.user.dto.car.ResGetCarBrands;
import com.dingding.facade.user.dto.car.ResGetCarModels;
import com.dingding.facade.user.dto.order.ReqSyncDriverAuthDTO;
import com.dingding.facade.user.dto.order.ResSyncDriverAuthDTO;
import com.dingding.facade.user.dto.taxi.ReqTaxiUserAuthDTO;
import com.dingding.facade.user.dto.taxi.ReqTaxiUserReAuthDTO;
import com.dingding.facade.user.dto.taxi.RespTaxiUserAuthDTO;
import com.dingding.facade.user.dto.taxi.RespTaxiUserReAuthDTO;
import com.dingding.facade.user.facade.auth.ISyncDriverAuthFacade;
import com.dingding.facade.user.facade.special.driver.ISpecialDepositPasswordFacade;
import com.dingding.facade.user.service.car.ICarBrandModelFacade;
import com.dingding.facade.user.service.taxi.ITaxiUserFacade;
import com.dingding.special.user.account.biz.ISpecialUserAccountService;
import com.dingding.special.user.account.dto.ReqSpecialAccountTradeDetailDTO;
import com.dingding.special.user.account.dto.ReqUserPacketDTO;
import com.dingding.special.user.account.dto.ResSpecialAccountTradeDetailDTO;
import com.dingding.special.user.account.dto.ResUserPacketDTO;
import com.dingding.special.user.deposit.biz.IUserDepositService;
import com.dingding.special.user.deposit.dto.ReqUserDepositDTO;
import com.dingding.special.user.deposit.dto.ReqUserDepositDetailDTO;
import com.dingding.special.user.deposit.dto.ResUserDepositDTO;
import com.dingding.special.user.deposit.dto.ResUserDepositDetailDTO;
import com.dingding.special.user.driver.dto.driverauth.ReqSpecialDriverAuth;
import com.dingding.special.user.driver.dto.driverauth.ResSpecialDriverAuth;
import com.dingding.special.user.driver.dto.reauth.ReqReDriverAuth;
import com.dingding.special.user.driver.dto.reauth.ResReDriverAuth;
import com.dingding.special.user.driver.service.IDriverUserService;
import com.dingding.special.user.login.dto.ReqSpecialUserLoginDTO;
import com.dingding.special.user.login.service.IUserLoginService;
import com.dingding.special.user.logout.dto.ReqSpecialUserLogOutDTO;
import com.dingding.special.user.logout.service.ILogOutService;
import com.dingding.special.user.set.dto.ReqOrderDesignateSetDTO;
import com.dingding.special.user.set.service.ISetUserStatusService;
import com.dingding.special.user.system.dto.ReqCheckUpdateDTO;
import com.dingding.special.user.system.service.ICheckUpdateService;
import com.dingding.special.user.userinfo.dto.ReqGetTokenByRongCloud;
import com.dingding.special.user.userinfo.dto.ReqGetUserInfoDTO;
import com.dingding.special.user.userinfo.dto.ReqUpdateUserAvatarDTO;
import com.dingding.special.user.userinfo.dto.ReqUpdateUserInfoDTO;
import com.dingding.special.user.userinfo.dto.ReqUserDatumDTO;
import com.dingding.special.user.userinfo.dto.ResGetTokenByRongCloud;
import com.dingding.special.user.userinfo.dto.ResGetUserInfoDTO;
import com.dingding.special.user.userinfo.dto.ResUpdateUserInfoDTO;
import com.dingding.special.user.userinfo.dto.ResUserDatumDTO;
import com.dingding.special.user.userinfo.service.ISpecialUserInfoService;
import com.dingding.special.user.validate.dto.ReqGetValidateCodeDTO;
import com.dingding.special.user.validate.service.IValidateCodeService;
import com.dingding.special.user.vehicle.dto.ReqSpecialVehicleDTO;
import com.dingding.special.user.vehicle.dto.ResSpecialVehicleDTO;
import com.dingding.special.user.vehicle.service.ISpecialVehicleService;

/**
 * 
 * @ClassName: SpecialUser 
 * @Description: 专车车主端用户信息相关业务操作控制器 
 * @author CHEHAUNBO 
 * @date 2016年8月18日 上午10:30:29
 *  
 */
@Controller("specialUserController")
@RequestMapping("/authorapi/special/driver/user")
public class SpecialUserController extends BaseController {

	@Resource(name = "specialUserLoginService")
	private IUserLoginService userLoginService;

	@Resource(name = "validateCodeService")
	private IValidateCodeService valiateCodeService;

	@Resource(name = "setUserStatusService")
	private ISetUserStatusService setUserStatusService;

	@Resource(name = "driverUserService")
	private IDriverUserService driverUserService;

	@Resource(name = "sepcialDeiverLogOutService")
	private ILogOutService logOutService;

	@Resource(name = "specialUserAccountService")
	private ISpecialUserAccountService userAccountService;

	@Resource(name = "userDepositService")
	private IUserDepositService userDepositService;

	@Resource(name = "specialUserInfoService")
	private ISpecialUserInfoService specialUserInfoService;

	@Resource(name = "specialVehicleService")
	private ISpecialVehicleService specialVehicleService;

	@Resource(name = "checkUpdateService")
	private ICheckUpdateService checkUpdateService;
	
	@Resource(name = "carBrandModelFacade")
	private ICarBrandModelFacade carBrandModelFacade;
	
	@Resource(name = "taxiUserFacade")
	private ITaxiUserFacade taxiUserFacade;

	@Resource(name="syncDriverAuthFacade")
	private ISyncDriverAuthFacade syncDriverAuthFacade;
	
	@Resource(name = "specialUserAccountFacade_special")
	private ISpecialUserAccountFacade specialUserAccountFacade;
	
	@Resource(name = "specialDepositPasswordFacade_special")
	private ISpecialDepositPasswordFacade specialDepositPasswordFacade;
	
	/**
	 * @Description:获取司机当日信息
	 * @author fengshuonan
	 * @since 2.4
	 */
	@RequestMapping(value = "/v1/driverTodayInfo")
	public void driverTodayInfo(HttpServletRequest request, HttpServletResponse response) {

		ReqGetTodayInfo reqGetTodayInfo = super.getRequestBean(request, response, ReqGetTodayInfo.class);
		ResGetTodayInfo resGetTodayInfo = this.driverUserService.getDriverTodayInfo(reqGetTodayInfo);
		super.generateSuccessResponse(response, new ResponseEntity<ResGetTodayInfo>(), resGetTodayInfo);
	}

	/**
	 * @Description:车主认证
	 * @author fengshuonan
	 * @since 2.4
	 * @deprecated 从2.6.2严禁使用此接口
	 */
	@RequestMapping(value = "/v1/driverAuth")
	public void driverAuth(HttpServletRequest request, HttpServletResponse response) {

		ReqSpecialDriverAuth reqSpecialDriverAuth = super.getRequestBean(request, response, ReqSpecialDriverAuth.class);
		ResSpecialDriverAuth resSpecialDriverAuth = this.driverUserService.specialDriverAuth(reqSpecialDriverAuth);
		super.generateSuccessResponse(response, new ResponseEntity<ResSpecialDriverAuth>(), resSpecialDriverAuth);
	}

	/**
	 * @Description:车重新认证
	 * @author fengshuonan
	 * @deprecated 从2.6.2严禁使用此接口
	 * @since 2.4
	 */
	@RequestMapping(value = "/v1/reDriverAuth")
	public void reDriverAuth(HttpServletRequest request, HttpServletResponse response) {

		ReqReDriverAuth reDriverAuth = super.getRequestBean(request, response, ReqReDriverAuth.class);
		ResReDriverAuth res = this.driverUserService.reDriverAuth(reDriverAuth);
		super.generateSuccessResponse(response, new ResponseEntity<ResSpecialDriverAuth>(), res);
	}

	/**
	 * @Description:同步车主认证状态
	 * @author ligang
	 * @since 2.5.6
	 			*/
	@RequestMapping(value="/v1/syncDriverAuth",method = RequestMethod.POST)
	public void syncDriverAuth(HttpServletRequest request, HttpServletResponse response){
		
		ReqSyncDriverAuthDTO reqSyncDriverAuthDTO = super.getRequestBean(request, response, ReqSyncDriverAuthDTO.class);
		ResSyncDriverAuthDTO resSyncDriverAuthDTO = syncDriverAuthFacade.selectSyncDriverAuth(reqSyncDriverAuthDTO);
		super.generateSuccessResponse(response, new ResponseEntity<ResSyncDriverAuthDTO>(), resSyncDriverAuthDTO);
		
	}
	/**
	 * 
	 * 专车车主登录
	 * 
	 * @Title: userLoin 
	 * @param requestData
	 * @author CHEHAUNBO
	 * @since V2.4.0
	 * 
	 * 
	 */
	@RequestMapping(value = "/v1/driverLogin", method = RequestMethod.POST)
	public void driverUserLogin(HttpServletRequest request, HttpServletResponse response) {

		ReqSpecialUserLoginDTO reqSpecialUserLoginDTO = super.getRequestBean(request, response,
				ReqSpecialUserLoginDTO.class);
		super.responseData(response, userLoginService.login(reqSpecialUserLoginDTO));
	}

	/**
	 * 
	 * 用户注销 
	 * @Title: userLoin 
	 * @param requestData
	 * @author CHEHAUNBO
	 * @since V2.4.0
	 * 
	 * 
	 */
	@RequestMapping(value = "/v1/userLogOut", method = RequestMethod.POST)
	public void userLogOut(HttpServletRequest request, HttpServletResponse response) {

		ReqSpecialUserLogOutDTO reqSpecialUserLogOutDTO = super.getRequestBean(request, response,
				ReqSpecialUserLogOutDTO.class);
		super.responseData(response, logOutService.logOut(reqSpecialUserLogOutDTO));

	}

	/**
	 * 
	 * 获取手机验证码
	 * 
	 * @Title: userLoin 
	 * @param requestData
	 * @author CHEHAUNBO
	 * @since V2.4.0
	 * 
	 * 
	 */
	@RequestMapping(value = "/v1/getTellPhoneValidate", method = RequestMethod.POST)
	public void getValidateCode(HttpServletRequest request, HttpServletResponse response) {

		ReqGetValidateCodeDTO getValidateCodeDTO = super.getRequestBean(request, response, ReqGetValidateCodeDTO.class);
		super.responseData(response, valiateCodeService.sendPhoneNum_(getValidateCodeDTO));

	}

	/**
	 * 
	 * 车主状态设置
	 * 出车、收车、上传位置
	 *  
	 * @Title: outWardRun 
	 * @author CHEHAUNBO
	 * 
	 */
	@RequestMapping(value = "/v1/setDriverStatus", method = RequestMethod.POST)
	public void setDriverStatus(HttpServletRequest request, HttpServletResponse response) {

		ReqSetUserStatusDTO reqSetUserStatusDTO = super.getRequestBean(request, response, ReqSetUserStatusDTO.class);
		super.responseData(response, setUserStatusService.setDriverStatus(reqSetUserStatusDTO));
	}

	/**
	 * 
	 * 订单偏好设置  
	 * @Title: outWardRun 
	 * @author CHEHAUNBO
	 * @since V2.4.0
	 * 
	 */
	@RequestMapping(value = "/v1/setOrderDesignateSet", method = RequestMethod.POST)
	public void setOrderDesignateSet(HttpServletRequest request, HttpServletResponse response) {

		ReqOrderDesignateSetDTO reqOrderDesignateSetDTO = super.getRequestBean(request, response,
				ReqOrderDesignateSetDTO.class);
		super.responseData(response, setUserStatusService.setOrderDesignateSet(reqOrderDesignateSetDTO));
	}

	/**
	 * 
	 * 获取用户钱包
	 * @Title: getUserPacket 
	 * @author YHQ
	 * @since V2.4.0
	 * 
	 */
	@RequestMapping(value = "/v1/driverPacket", method = RequestMethod.POST)
	public void getUserPacket(HttpServletRequest request, HttpServletResponse response) {

		ReqUserPacketDTO reqUserPacketDTO = super.getRequestBean(request, response, ReqUserPacketDTO.class);

		ResponseEntity<ResUserPacketDTO> responseEntity = userAccountService.getUserPacket(reqUserPacketDTO);

		super.responseData(response, responseEntity);
	}

	/**
	 * 
	 * 获取用户账户明细
	 * @Title: getInOutDetail 
	 * @author YHQ
	 * @since V2.4.0
	 * 
	 */
	@RequestMapping(value = "/v1/getInOutDetail", method = RequestMethod.POST)
	public void getInOutDetail(HttpServletRequest request, HttpServletResponse response) {

		ReqSpecialAccountTradeDetailDTO tradeDetailDTO = super.getRequestBean(request, response,
				ReqSpecialAccountTradeDetailDTO.class);

		ResponseEntity<ResSpecialAccountTradeDetailDTO> responseEntity = userAccountService
				.getUserAccountTradeDetail(tradeDetailDTO);

		super.responseData(response, responseEntity);
	}

	/**
	 * 
	 * 获取提现
	 * @Title: takeMoney 
	 * @author YHQ
	 * @since V2.4.0
	 * 
	 */
	@RequestMapping(value = "/v1/takeMoney", method = RequestMethod.POST)
	public void takeMoney(HttpServletRequest request, HttpServletResponse response) {

		ReqUserDepositDTO reqUserDepositDTO = super.getRequestBean(request, response, ReqUserDepositDTO.class);

		ResponseEntity<ResUserDepositDTO> responseEntity = userDepositService.takeMoney(reqUserDepositDTO);

		super.responseData(response, responseEntity);
	}

	/**
	 * 
	 * 获取提现明细
	 * @Title: getDepositDetail 
	 * @author YHQ
	 * @since V2.4.0
	 * 
	 */
	@RequestMapping(value = "/v1/getDepositDetail", method = RequestMethod.POST)
	public void getDepositDetail(HttpServletRequest request, HttpServletResponse response) {

		ReqUserDepositDetailDTO reqUserDepositDetailDTO = super.getRequestBean(request, response,
				ReqUserDepositDetailDTO.class);

		ResponseEntity<ResUserDepositDetailDTO> responseEntity = userDepositService
				.depositDetail(reqUserDepositDetailDTO);

		super.responseData(response, responseEntity);
	}

	/**
	 * 
	 * 我的资料
	 * @Title: getUserDetail 
	 * @author YHQ
	 * @since V2.4.0
	 * 
	 */
	@RequestMapping(value = "/v1/getUserDetail", method = RequestMethod.POST)
	public void getUserDetail(HttpServletRequest request, HttpServletResponse response) {

		ReqUserDatumDTO reqUserDatumDTO = super.getRequestBean(request, response, ReqUserDatumDTO.class);

		ResponseEntity<ResUserDatumDTO> responseEntity = specialUserInfoService.getUserDatum(reqUserDatumDTO);

		super.responseData(response, responseEntity);
	}

	/**
	 * 
	 * 修改用户信息 
	 * @Title: updateUserInfo
	 * @author YHQ
	 * @since V2.4.0
	 * 
	 */
	@RequestMapping(value = "/v1/updateUserInfo", method = RequestMethod.POST)
	public void updateUserInfo(HttpServletRequest request, HttpServletResponse response) {

		ReqUpdateUserInfoDTO reqUpdateUserInfoDTO = super.getRequestBean(request, response, ReqUpdateUserInfoDTO.class);

		ResponseEntity<ResUpdateUserInfoDTO> responseEntity = specialUserInfoService
				.updateUserInfo(reqUpdateUserInfoDTO);

		super.responseData(response, responseEntity);
	}

	/**
	 * 
	 * 修改用户头像
	 * @Title: updateUserInfo
	 * @author CHEHUANBO
	 * @since V2.4.0
	 * 
	 */
	@RequestMapping(value = "/v1/updateUserAvatar", method = RequestMethod.POST)
	public void updateUserAvatar(HttpServletRequest request, HttpServletResponse response) {

		ReqUpdateUserAvatarDTO reqUpdateUserInfoDTO = super.getRequestBean(request, response,
				ReqUpdateUserAvatarDTO.class);
		super.responseData(response, specialUserInfoService.updateUserAvatar(reqUpdateUserInfoDTO));

	}

	/**
	 * 
	 * 获取融云Token 
	 * @Title: getTokenByRongCloud
	 * @author YHQ
	 * @since V2.4.0
	 * 
	 */
	@RequestMapping(value = "/v1/getTokenByRongCloud", method = RequestMethod.POST)
	public void getTokenByRongCloud(HttpServletRequest request, HttpServletResponse response) {

		ReqGetTokenByRongCloud reqGetTokenByRongCloud = super.getRequestBean(request, response,
				ReqGetTokenByRongCloud.class);

		ResponseEntity<ResGetTokenByRongCloud> responseEntity = specialUserInfoService
				.getTokenByRongCloud(reqGetTokenByRongCloud);

		super.responseData(response, responseEntity);
	}

	/**
	 * 
	 * 获取融云所需用户信息
	 * @Title: getUserDetailById
	 * @author YHQ
	 * @since V2.4.0
	 * 
	 */
	@RequestMapping(value = "/v1/getUserDetailById", method = RequestMethod.POST)
	public void getUserDetailById(HttpServletRequest request, HttpServletResponse response) {

		ReqGetUserInfoDTO reqGetUserInfoDTO = super.getRequestBean(request, response, ReqGetUserInfoDTO.class);

		ResponseEntity<ResGetUserInfoDTO> responseEntity = specialUserInfoService.getRongCloudInfo(reqGetUserInfoDTO);

		super.responseData(response, responseEntity);
	}

	/**
	 * 
	 * 获取车辆信息
	 * @Title: getCarInfo 
	 * @author YHQ
	 * @since V2.4.0
	 * 
	 */
	@RequestMapping(value = "/v1/getCarInfo", method = RequestMethod.POST)
	public void getCarInfo(HttpServletRequest request, HttpServletResponse response) {

		ReqSpecialVehicleDTO reqSpecialVehicleDTO = super.getRequestBean(request, response, ReqSpecialVehicleDTO.class);

		ResponseEntity<ResSpecialVehicleDTO> responseEntity = specialVehicleService
				.getSpecialVehicleInfo(reqSpecialVehicleDTO);

		super.responseData(response, responseEntity);
	}

	/**
	 * 
	 * 检查更新
	 * @Title: checkUpdate 
	 * @author CHEHUANBO
	 * @since V2.4.0
	 * 
	 */
	@RequestMapping(value = "/v1/checkUpdate", method = RequestMethod.POST)
	public void checkUpdate(HttpServletRequest request, HttpServletResponse response) {

		ReqCheckUpdateDTO reqCheckUpdateDTO = super.getRequestBean(request, response, ReqCheckUpdateDTO.class);
		this.responseData(response, checkUpdateService.checkUpdate(reqCheckUpdateDTO));

	}
		
	/**
	 * @Description:获取所有车辆品牌
	 * @author fengshuonan
	 * @since 2.4
	 */
	@RequestMapping(value = "/v1/getBrands", method = RequestMethod.POST)
	public void getBrands(HttpServletRequest request, HttpServletResponse response) {

		// 获取客户端数据
		ReqGetCarBrands reqGetCarBrands = super.getRequestBean(request, response, ReqGetCarBrands.class);
		
		// 执行业务处理，并返回处理后的数据
		FacadeResult<ResGetCarBrands> facadeResult = this.carBrandModelFacade.getCarBrands(reqGetCarBrands.getCarBrandNum());
		
		// 加密数据，并返回给客户端
		super.generateFacadeResponse(response, new ResponseEntity<ResGetCarBrands>(), facadeResult);
		
	}
	
	/**
	 * @Description:获取某个车辆品牌所有的车型
	 * @author fengshuonan
	 * @since 2.4
	 */
	@RequestMapping(value = "/v1/getModels", method = RequestMethod.POST)
	public void getModels(HttpServletRequest request, HttpServletResponse response) {

		// 获取客户端数据
		ReqGetCarModels reqGetCarModels = super.getRequestBean(request, response, ReqGetCarModels.class);
		
		// 执行业务处理，并返回处理后的数据
		FacadeResult<ResGetCarModels> facadeResult = this.carBrandModelFacade.getCarModels(reqGetCarModels.getCarBrandId());
		
		// 加密数据，并返回给客户端
		super.generateFacadeResponse(response, new ResponseEntity<ResGetCarModels>(), facadeResult);
		
	}
	
	/**
	 * @Title: TaxiUserController.java
	 * @Package com.dingding.special.controller
	 * @Description: 出租车主认证
	 * @author haoxiaojun
	 * @date 2016年11月21日 下午1:40:45
	 * @version V2.5.6
	 */
	@RequestMapping(value = "/v2/driverAuth")
	public void taxiUserAuth(HttpServletRequest request, HttpServletResponse response) {
		// 获取客户端数据
		ReqTaxiUserAuthDTO reqTaxiUserAuth = super.getRequestBean(request, response, ReqTaxiUserAuthDTO.class);
		// 执行业务处理，并返回处理后的数据
		FacadeResult<RespTaxiUserAuthDTO> results = this.taxiUserFacade.taxiUserAuth(reqTaxiUserAuth);
		super.generateFacadeResponse(response, new ResponseEntity<RespTaxiUserAuthDTO>(), results);
	}

	/**
	 * @Title: TaxiUserController.java
	 * @Package com.dingding.special.controller
	 * @Description: 出租车主重新认证
	 * @author haoxiaojun
	 * @date 2016年11月21日 下午1:41:03
	 * @version V2.5.6
	 */
	@RequestMapping(value = "/v2/reDriverAuth")
	public void reTaxiDriverAuth(HttpServletRequest request, HttpServletResponse response) {
		// 获取客户端数据
		ReqTaxiUserReAuthDTO req = super.getRequestBean(request, response, ReqTaxiUserReAuthDTO.class);
		// 执行业务处理，并返回处理后的数据
		FacadeResult<RespTaxiUserReAuthDTO> results = this.taxiUserFacade.reTaxiUserAuth(req);
		// 加密数据，并返回给客户端
		super.generateFacadeResponse(response, new ResponseEntity<RespTaxiUserAuthDTO>(), results);
	}
	
	/**
	 * 
	 * @Title: getSpecialUserAuthenticationStatus 
	 * @Description 获取用户提现认证状态
	 * @author YHQ 
	 * @since V2.6.3
	 * @return void    返回类型
	 * 
	 */
	@RequestMapping(value = "/v1/getSpecialUserAuthenticationStatus")
	public void getSpecialUserAuthenticationStatus(HttpServletRequest request, HttpServletResponse response){
		
		ReqSUAStatus reqSUAStatus = super.getRequestBean(request, response, ReqSUAStatus.class);
		
		ResponseEntity<Object> responseEntity = specialUserAccountFacade.getSpecialUserAuthenticationStatus(reqSUAStatus);
		
		this.responseData(response,responseEntity);
		
	}
	
	/**
	 * 
	 * @Title: addSpecialDepositAccount 
	 * @Description: 添加专车用户提现账户
	 * @param reqAddSpecialDepositAccount 客户端请求参数
	 * @author YHQ 
	 * @since V2.6.3
	 * 
	 */
	@RequestMapping(value = "/v1/addSpecialDepositAccount")
	public void addSpecialDepositAccount(HttpServletRequest request, HttpServletResponse response){
		
		ReqAddSpecialDepositAccount reqAddSpecialDepositAccount = super.getRequestBean(request, response, ReqAddSpecialDepositAccount.class);
		
		ResponseEntity<Object> responseEntity = specialUserAccountFacade.addSpecialDepositAccount(reqAddSpecialDepositAccount);
		
		this.responseData(response,responseEntity);
	}
	
	/**
	 * 
	 * @Title: deleteSpecialDepositAccount 
	 * @Description: 删除专车用户提现账户
	 * @param reqDeleteSpecialDepositAccount 客户端请求参数
	 * @author YHQ 
	 * @since V2.6.3
	 * 
	 */
	@RequestMapping(value = "/v1/deleteSpecialDepositAccount")
	public void deleteSpecialDepositAccount(HttpServletRequest request, HttpServletResponse response){
		
		ReqDeleteSpecialDepositAccount reqDeleteSpecialDepositAccount = super.getRequestBean(request, response, ReqDeleteSpecialDepositAccount.class);
		
		ResponseEntity<Object> responseEntity = specialUserAccountFacade.deleteSpecialDepositAccount(reqDeleteSpecialDepositAccount);
		
		this.responseData(response,responseEntity);
	}
	
	/**
	 * 
	 * @Title: getSpecialDepositAccountList 
	 * @Description: 获取专车用户提现账户列表
	 * @param reqGetSpecialDepositAccount 
	 * @author YHQ 
	 * @since V2.6.3
	 * 
	 */
	@RequestMapping(value = "/v1/getSpecialDepositAccountList")
	public void getSpecialDepositAccountList(HttpServletRequest request, HttpServletResponse response){
		
		ReqGetSpecialDepositAccount reqGetSpecialDepositAccount = super.getRequestBean(request, response, ReqGetSpecialDepositAccount.class);
		
		ResponseEntity<Object> responseEntity = specialUserAccountFacade.getSpecialDepositAccountList(reqGetSpecialDepositAccount);
		
		this.responseData(response,responseEntity);
	}
	
	/**
	 * 
	 * @Title: updateSpecialDepositPassword 
	 * @Description: 修改用户提现密码(司机端)
	 * @author YHQ 
	 * @since V2.6.3
	 * @return void    返回类型
	 * 
	 */
	@RequestMapping(value = "/v1/updateSpecialDepositPassword")
	public void updateSpecialDepositPassword(HttpServletRequest request, HttpServletResponse response){
		
		ReqUpdateSpecialDepositPassword reqUpdateSpecialDepositPassword =  super.getRequestBean(request, response, ReqUpdateSpecialDepositPassword.class);
		
		ResponseEntity<Object> responseEntity = specialDepositPasswordFacade.updateSpecialDepositPassword(reqUpdateSpecialDepositPassword);
		
		this.responseData(response,responseEntity);
	}
	
	/**
	 * 
	 * @Title: forgetSpecialDepositPassword 
	 * @Description: 忘记提现密码(司机端) 
	 * @author YHQ 
	 * @since V2.6.3
	 * @return void    返回类型
	 * 
	 */
	@RequestMapping(value = "/v1/forgetSpecialDepositPassword")
	public void forgetSpecialDepositPassword(HttpServletRequest request, HttpServletResponse response){
		
		ReqForgetSpecialDepositPassword reqForgetSpecialDepositPassword =  super.getRequestBean(request, response, ReqForgetSpecialDepositPassword.class);
		
		ResponseEntity<Object> responseEntity = specialDepositPasswordFacade.forgetSpecialDepositPassword(reqForgetSpecialDepositPassword);
		
		this.responseData(response,responseEntity);
	}
	
	/**
	 * 
	 * @Title: specialUserDeposit 
	 * @Description: 专车用户提现
	 * @author YHQ 
	 * @since V2.6.3
	 * @return void    返回类型
	 * 
	 */
	@RequestMapping(value = "/v1/specialUserDeposit")
	public void specialUserDeposit(HttpServletRequest request, HttpServletResponse response){
		
		ReqSpecialWithdrawals reqSpecialWithdrawals = super.getRequestBean(request, response, ReqSpecialWithdrawals.class);
		
		ResponseEntity<Object> responseEntity = specialUserAccountFacade.specialWithdrawals(reqSpecialWithdrawals);
		
		this.responseData(response,responseEntity);
	}
	
}
